using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataManagementTools._Fields
{
    /// <summary>
    /// <para>Disable Editor Tracking</para>
    /// <para>Disables editor tracking on a feature class, table, feature dataset, or mosaic dataset.</para>
    /// <para>禁用对要素类、表、要素数据集或镶嵌数据集的编辑者追踪。</para>
    /// </summary>    
    [DisplayName("Disable Editor Tracking")]
    public class DisableEditorTracking : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public DisableEditorTracking()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_dataset">
        /// <para>Input Dataset</para>
        /// <para>The feature class, table, feature dataset, or mosaic dataset in which editor tracking will be disabled.</para>
        /// <para>将在其中禁用编辑者追踪的要素类、表、要素数据集或镶嵌数据集。</para>
        /// </param>
        public DisableEditorTracking(object _in_dataset)
        {
            this._in_dataset = _in_dataset;
        }
        public override string ToolboxName => "Data Management Tools";

        public override string ToolName => "Disable Editor Tracking";

        public override string CallName => "management.DisableEditorTracking";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_dataset, _creator.GetGPValue(), _creation_date.GetGPValue(), _last_editor.GetGPValue(), _last_edit_date.GetGPValue(), _out_dataset];

        /// <summary>
        /// <para>Input Dataset</para>
        /// <para>The feature class, table, feature dataset, or mosaic dataset in which editor tracking will be disabled.</para>
        /// <para>将在其中禁用编辑者追踪的要素类、表、要素数据集或镶嵌数据集。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_dataset { get; set; }


        /// <summary>
        /// <para>Disable Creator Tracking</para>
        /// <para><xdoc>
        ///   <para>Specifies whether editor tracking for the creator field will be disabled.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—Editor tracking for the creator field will be disabled. This is the default.</bullet_item><para/>
        ///     <bullet_item>Unchecked—Editor tracking for the creator field will not be disabled.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否禁用创建者字段的编辑者跟踪。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 - 将禁用创建者字段的编辑者追踪。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>未选中 - 不会禁用创建者字段的编辑者追踪。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Disable Creator Tracking")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _creator_value _creator { get; set; } = _creator_value._true;

        public enum _creator_value
        {
            /// <summary>
            /// <para>DISABLE_CREATOR</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("DISABLE_CREATOR")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_DISABLE_CREATOR</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_DISABLE_CREATOR")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Disable Creation Date Tracking</para>
        /// <para><xdoc>
        ///   <para>Specifies whether editor tracking for the creation date field will be disabled.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—Editor tracking for the creation date field will be disabled. This is the default.</bullet_item><para/>
        ///     <bullet_item>Unchecked—Editor tracking for the creation date field will not be disabled.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否禁用创建日期字段的编辑者跟踪。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 - 将禁用创建日期字段的编辑者追踪。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>未选中 - 不会禁用创建日期字段的编辑者追踪。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Disable Creation Date Tracking")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _creation_date_value _creation_date { get; set; } = _creation_date_value._true;

        public enum _creation_date_value
        {
            /// <summary>
            /// <para>DISABLE_CREATION_DATE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("DISABLE_CREATION_DATE")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_DISABLE_CREATION_DATE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_DISABLE_CREATION_DATE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Disable Last Editor Tracking</para>
        /// <para><xdoc>
        ///   <para>Specifies whether editor tracking for the last editor field will be disabled.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—Editor tracking for the last editor field will be disabled. This is the default.</bullet_item><para/>
        ///     <bullet_item>Unchecked—Editor tracking for the last editor field will not be disabled.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否禁用最后一个编辑者字段的编辑者跟踪。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 - 将禁用最后一个编辑者字段的编辑者追踪。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>未选中 - 不会禁用最后一个编辑者字段的编辑者追踪。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Disable Last Editor Tracking")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _last_editor_value _last_editor { get; set; } = _last_editor_value._true;

        public enum _last_editor_value
        {
            /// <summary>
            /// <para>DISABLE_LAST_EDITOR</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("DISABLE_LAST_EDITOR")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_DISABLE_LAST_EDITOR</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_DISABLE_LAST_EDITOR")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Disable Last Edit Date Tracking</para>
        /// <para><xdoc>
        ///   <para>Specifies whether editor tracking for the last edit date field will be disabled.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—Editor tracking for the last edit date field will be disabled. This is the default.</bullet_item><para/>
        ///     <bullet_item>Unchecked—Editor tracking for the last edit date field will not be disabled.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否禁用对上次编辑日期字段的编辑者跟踪。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 - 将禁用上次编辑日期字段的编辑者追踪。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>未选中 - 不会禁用上次编辑日期字段的编辑者追踪。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Disable Last Edit Date Tracking")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _last_edit_date_value _last_edit_date { get; set; } = _last_edit_date_value._true;

        public enum _last_edit_date_value
        {
            /// <summary>
            /// <para>DISABLE_LAST_EDIT_DATE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("DISABLE_LAST_EDIT_DATE")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_DISABLE_LAST_EDIT_DATE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_DISABLE_LAST_EDIT_DATE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Updated Input Dataset</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated Input Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_dataset { get; set; }


        public DisableEditorTracking SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}